[INFO] cloning repository https://github.com/williamisnotdefined/rubiks-cube-solver
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/williamisnotdefined/rubiks-cube-solver" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwilliamisnotdefined%2Frubiks-cube-solver", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwilliamisnotdefined%2Frubiks-cube-solver'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 90be0b4dab2e1042db9c90be5e83aca214288bac
[INFO] testing williamisnotdefined/rubiks-cube-solver/90be0b4dab2e1042db9c90be5e83aca214288bac against master#cced03bfd61a304243a34504618ecec86c17063f for pr-154065-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwilliamisnotdefined%2Frubiks-cube-solver" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-1-tc1/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/williamisnotdefined/rubiks-cube-solver
[INFO] finished tweaking git repo https://github.com/williamisnotdefined/rubiks-cube-solver
[INFO] tweaked toml for git repo https://github.com/williamisnotdefined/rubiks-cube-solver written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/williamisnotdefined/rubiks-cube-solver on toolchain cced03bfd61a304243a34504618ecec86c17063f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/williamisnotdefined/rubiks-cube-solver already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded icu_properties v2.2.0
[INFO] [stderr]   Downloaded idna_adapter v1.2.2
[INFO] [stderr]   Downloaded zerovec-derive v0.11.3
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.122
[INFO] [stderr]   Downloaded potential_utf v0.1.5
[INFO] [stderr]   Downloaded zerofrom-derive v0.1.7
[INFO] [stderr]   Downloaded futures-core v0.3.32
[INFO] [stderr]   Downloaded futures-sink v0.3.32
[INFO] [stderr]   Downloaded http-range-header v0.4.2
[INFO] [stderr]   Downloaded futures-task v0.3.32
[INFO] [stderr]   Downloaded wasm-bindgen-futures v0.4.72
[INFO] [stderr]   Downloaded yoke-derive v0.8.2
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.122
[INFO] [stderr]   Downloaded tokio-macros v2.7.0
[INFO] [stderr]   Downloaded unicase v2.9.0
[INFO] [stderr]   Downloaded shlex v2.0.1
[INFO] [stderr]   Downloaded pin-project-lite v0.2.17
[INFO] [stderr]   Downloaded ipnet v2.12.0
[INFO] [stderr]   Downloaded hyper-rustls v0.27.9
[INFO] [stderr]   Downloaded writeable v0.6.3
[INFO] [stderr]   Downloaded axum-core v0.4.5
[INFO] [stderr]   Downloaded memchr v2.8.1
[INFO] [stderr]   Downloaded displaydoc v0.2.6
[INFO] [stderr]   Downloaded litemap v0.8.2
[INFO] [stderr]   Downloaded futures-channel v0.3.32
[INFO] [stderr]   Downloaded yoke v0.8.2
[INFO] [stderr]   Downloaded icu_provider v2.2.0
[INFO] [stderr]   Downloaded log v0.4.30
[INFO] [stderr]   Downloaded socket2 v0.6.3
[INFO] [stderr]   Downloaded icu_normalizer v2.2.0
[INFO] [stderr]   Downloaded icu_normalizer_data v2.2.0
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.122
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.122
[INFO] [stderr]   Downloaded tower-http v0.6.11
[INFO] [stderr]   Downloaded zerotrie v0.2.4
[INFO] [stderr]   Downloaded icu_locale_core v2.2.0
[INFO] [stderr]   Downloaded icu_collections v2.2.0
[INFO] [stderr]   Downloaded bumpalo v3.20.3
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.50
[INFO] [stderr]   Downloaded cc v1.2.63
[INFO] [stderr]   Downloaded http v1.4.1
[INFO] [stderr]   Downloaded js-sys v0.3.99
[INFO] [stderr]   Downloaded mio v1.2.0
[INFO] [stderr]   Downloaded hyper v1.10.0
[INFO] [stderr]   Downloaded axum v0.7.9
[INFO] [stderr]   Downloaded icu_properties_data v2.2.0
[INFO] [stderr]   Downloaded futures-util v0.3.32
[INFO] [stderr]   Downloaded zerocopy v0.8.50
[INFO] [stderr]   Downloaded web-sys v0.3.99
[INFO] [stderr]   Downloaded tokio v1.52.3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 4d8d02c8ce4372f93b34ec4d54d90aae34532025cac4d519f91807cec48341d4
[INFO] running `Command { std: "docker" "start" "-a" "4d8d02c8ce4372f93b34ec4d54d90aae34532025cac4d519f91807cec48341d4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4d8d02c8ce4372f93b34ec4d54d90aae34532025cac4d519f91807cec48341d4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4d8d02c8ce4372f93b34ec4d54d90aae34532025cac4d519f91807cec48341d4", kill_on_drop: false }`
[INFO] [stdout] 4d8d02c8ce4372f93b34ec4d54d90aae34532025cac4d519f91807cec48341d4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6ce52206bfe4782b83ff0bccb9b0d4a6bf1fe3e5ef6f6124b1fe40702d316dad
[INFO] running `Command { std: "docker" "start" "-a" "6ce52206bfe4782b83ff0bccb9b0d4a6bf1fe3e5ef6f6124b1fe40702d316dad", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling memchr v2.8.1
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling http v1.4.1
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling log v0.4.30
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling cc v1.2.63
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling rustls-pki-types v1.14.1
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling try-lock v0.2.5
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling http-range-header v0.4.2
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling matchit v0.7.3
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling cube-engine v0.1.0 (/opt/rustwide/workdir/crates/cube-engine)
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling hyper v1.10.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling rubiks-cube-solver-api v0.1.0 (/opt/rustwide/workdir/crates/api)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 04s
[INFO] running `Command { std: "docker" "inspect" "6ce52206bfe4782b83ff0bccb9b0d4a6bf1fe3e5ef6f6124b1fe40702d316dad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6ce52206bfe4782b83ff0bccb9b0d4a6bf1fe3e5ef6f6124b1fe40702d316dad", kill_on_drop: false }`
[INFO] [stdout] 6ce52206bfe4782b83ff0bccb9b0d4a6bf1fe3e5ef6f6124b1fe40702d316dad
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c4944f288f8677ec1f48f6105f291ed400ce238fcd7f738e83039d8b41614be9
[INFO] running `Command { std: "docker" "start" "-a" "c4944f288f8677ec1f48f6105f291ed400ce238fcd7f738e83039d8b41614be9", kill_on_drop: false }`
[INFO] [stderr]    Compiling cube-engine v0.1.0 (/opt/rustwide/workdir/crates/cube-engine)
[INFO] [stderr]    Compiling rubiks-cube-solver-api v0.1.0 (/opt/rustwide/workdir/crates/api)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 14.81s
[INFO] running `Command { std: "docker" "inspect" "c4944f288f8677ec1f48f6105f291ed400ce238fcd7f738e83039d8b41614be9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c4944f288f8677ec1f48f6105f291ed400ce238fcd7f738e83039d8b41614be9", kill_on_drop: false }`
[INFO] [stdout] c4944f288f8677ec1f48f6105f291ed400ce238fcd7f738e83039d8b41614be9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 3b1f60de68ad125f9efdca0b3669c4336df11e1764c1375e2ed6e286ce112c57
[INFO] running `Command { std: "docker" "start" "-a" "3b1f60de68ad125f9efdca0b3669c4336df11e1764c1375e2ed6e286ce112c57", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.28s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/cube_engine-38842135bab6539a)
[INFO] [stdout] 
[INFO] [stdout] running 329 tests
[INFO] [stdout] test cube::algorithm::tests::parse_display_round_trip_preserves_algorithm ... ok
[INFO] [stdout] test cube::algorithm::tests::algorithm_inverse_solves_applied_algorithm ... ok
[INFO] [stdout] test cube::coordinates::tests::corner_orientation_coordinate_has_explicit_range ... ok
[INFO] [stdout] test cube::coordinates::tests::edge_orientation_coordinate_has_explicit_range ... ok
[INFO] [stdout] test cube::coordinates::tests::front_half_turn_slice_edge_permutation_coordinate_round_trips ... ok
[INFO] [stdout] test cube::algorithm::tests::displays_algorithm_as_notation ... ok
[INFO] [stdout] test cube::coordinates::tests::corner_permutation_coordinate_has_explicit_range ... ok
[INFO] [stdout] test cube::algorithm::tests::parses_algorithm ... ok
[INFO] [stdout] test cube::coordinates::tests::front_turn_corner_orientation_coordinate_round_trips ... ok
[INFO] [stdout] test cube::coordinates::tests::front_turn_corner_permutation_coordinate_round_trips ... ok
[INFO] [stdout] test cube::coordinates::tests::front_turn_edge_orientation_coordinate_round_trips ... ok
[INFO] [stdout] test cube::coordinates::tests::front_turn_ud_slice_edge_combination_coordinate_round_trips_membership ... ok
[INFO] [stdout] test cube::coordinates::tests::highest_corner_orientation_coordinate_reconstructs_valid_state ... ok
[INFO] [stdout] test cube::coordinates::tests::highest_edge_orientation_coordinate_reconstructs_valid_state ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_duplicate_slice_edge_permutation_before_indexing ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_duplicate_ud_edge_permutation_before_indexing ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_invalid_edge_orientation_before_indexing ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_invalid_edge_orientation_sum_before_indexing ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_invalid_ud_slice_edge_count_before_indexing ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_missing_ud_edge_permutation_before_indexing ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_missing_slice_edge_permutation_before_indexing ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_out_of_range_corner_orientation_coordinate ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_out_of_range_corner_permutation_coordinate ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_out_of_range_edge_orientation_coordinate ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_out_of_range_slice_edge_permutation_coordinate ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_out_of_range_ud_edge_permutation_coordinate ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_out_of_range_ud_slice_edge_combination_coordinate ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_wrong_set_and_wrong_position_slice_edge_permutation_before_indexing ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_wrong_set_and_wrong_position_ud_edge_permutation_before_indexing ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_invalid_corner_permutation_before_indexing ... ok
[INFO] [stdout] test cube::coordinates::tests::solved_corner_orientation_coordinate_round_trips ... ok
[INFO] [stdout] test cube::coordinates::tests::rejects_invalid_corner_orientation_before_indexing ... ok
[INFO] [stdout] test cube::coordinates::tests::slice_edge_permutation_coordinate_has_explicit_range ... ok
[INFO] [stdout] test cube::coordinates::tests::solved_edge_orientation_coordinate_round_trips ... ok
[INFO] [stdout] test cube::coordinates::tests::solved_corner_permutation_coordinate_round_trips ... ok
[INFO] [stdout] test cube::coordinates::tests::slice_edge_permutation_documents_engine_slice_edges ... ok
[INFO] [stdout] test cube::coordinates::tests::solved_slice_edge_permutation_coordinate_round_trips ... ok
[INFO] [stdout] test cube::cubies::tests::corner_orientation_out_of_range_is_invalid ... ok
[INFO] [stdout] test cube::coordinates::tests::upper_turn_ud_edge_permutation_coordinate_round_trips ... ok
[INFO] [stdout] test cube::coordinates::tests::solved_ud_edge_permutation_coordinate_round_trips ... ok
[INFO] [stdout] test cube::coordinates::tests::ud_edge_permutation_documents_engine_ud_edges ... ok
[INFO] [stdout] test cube::cubies::tests::duplicate_edge_is_invalid ... ok
[INFO] [stdout] test cube::cubies::tests::validation_error_displays_duplicate_corner ... ok
[INFO] [stdout] test cube::cubies::tests::unmatched_permutation_parity_is_invalid ... ok
[INFO] [stdout] test cube::coordinates::tests::ud_edge_permutation_coordinate_has_explicit_range ... ok
[INFO] [stdout] test cube::cubies::tests::edge_orientation_out_of_range_is_invalid ... ok
[INFO] [stdout] test cube::cubies::tests::deserializes_solved_state ... ok
[INFO] [stdout] test cube::coordinates::tests::ud_slice_edge_combination_coordinate_has_explicit_range ... ok
[INFO] [stdout] test cube::facelets::tests::canonical_solved_facelet_string_converts_to_solved_cubie_state ... ok
[INFO] [stdout] test cube::cubies::tests::duplicate_corner_is_invalid ... ok
[INFO] [stdout] test cube::facelets::tests::corner_decoding_identifies_cubies_independent_of_sticker_order ... ok
[INFO] [stdout] test cube::facelets::tests::converted_solved_facelet_state_is_accepted_by_cube ... ok
[INFO] [stdout] test cube::facelets::tests::canonical_solved_facelet_string_parses_successfully ... ok
[INFO] [stdout] test cube::facelets::tests::duplicate_corner_sticker_combination_fails_cubie_conversion_with_structured_error ... ok
[INFO] [stdout] test cube::coordinates::tests::ud_slice_edge_combination_coordinate_tracks_membership_only ... ok
[INFO] [stdout] test cube::cubies::tests::invalid_corner_orientation_sum_is_invalid ... ok
[INFO] [stdout] test cube::cubies::tests::rejects_deserialized_invalid_state ... ok
[INFO] [stdout] test cube::cubies::tests::serializes_solved_state_to_stable_text ... ok
[INFO] [stdout] test cube::cubies::tests::solved_state_is_solved ... ok
[INFO] [stdout] test cube::facelets::tests::duplicate_edge_sticker_combination_fails_cubie_conversion_with_structured_error ... ok
[INFO] [stdout] test cube::cubies::tests::invalid_edge_orientation_sum_is_invalid ... ok
[INFO] [stdout] test cube::cubies::tests::solved_state_is_valid ... ok
[INFO] [stdout] test cube::facelets::tests::front_turn_renders_expected_facelet_string ... ok
[INFO] [stdout] test cube::facelets::tests::invalid_cubie_state_does_not_render ... ok
[INFO] [stdout] test cube::facelets::tests::invalid_face_counts_return_useful_error ... ok
[INFO] [stdout] test cube::facelets::tests::edge_decoding_identifies_cubies_independent_of_sticker_order ... ok
[INFO] [stdout] test cube::facelets::tests::invalid_length_returns_useful_error ... ok
[INFO] [stdout] test cube::facelets::tests::flipped_edge_fails_cubie_conversion_through_validation ... ok
[INFO] [stdout] test cube::facelets::tests::mirrored_corner_sticker_order_returns_structured_error ... ok
[INFO] [stdout] test cube::facelets::tests::converted_moved_facelet_states_are_accepted_by_cube ... ok
[INFO] [stdout] test cube::facelets::tests::invalid_symbol_returns_useful_error ... ok
[INFO] [stdout] test cube::facelets::tests::facelet_mapping_tables_cover_all_sticker_positions_once ... ok
[INFO] [stdout] test cube::facelets::tests::non_canonical_center_sticker_returns_structured_conversion_error ... ok
[INFO] [stdout] test cube::facelets::tests::moved_cubes_render_and_parse_as_facelet_strings ... ok
[INFO] [stdout] test cube::facelets::tests::one_move_facelets_decode_to_moved_corner_data ... ok
[INFO] [stdout] test cube::facelets::tests::parsed_facelets_are_exported_as_adapter_type ... ok
[INFO] [stdout] test cube::facelets::tests::duplicate_corner_sticker_combination_returns_structured_error ... ok
[INFO] [stdout] test cube::facelets::tests::solved_cubie_state_renders_to_canonical_solved_facelet_string ... ok
[INFO] [stdout] test cube::facelets::tests::solved_facelets_decode_to_solved_edge_data ... ok
[INFO] [stdout] test cube::facelets::tests::unknown_corner_sticker_combination_fails_cubie_conversion ... ok
[INFO] [stdout] test cube::facelets::tests::unknown_corner_sticker_combination_returns_structured_error ... ok
[INFO] [stdout] test cube::facelets::tests::solved_cube_renders_to_canonical_solved_facelet_string ... ok
[INFO] [stdout] test cube::facelets::tests::solved_facelets_decode_to_solved_corner_data ... ok
[INFO] [stdout] test cube::facelets::tests::one_move_facelets_decode_to_moved_edge_data ... ok
[INFO] [stdout] test cube::facelets::tests::swapped_corner_pieces_fail_cubie_conversion_through_parity_validation ... ok
[INFO] [stdout] test cube::facelets::tests::rotated_corner_fails_cubie_conversion_through_validation ... ok
[INFO] [stdout] test cube::facelets::tests::two_move_facelet_state_converts_to_matching_cubie_state ... ok
[INFO] [stdout] test cube::facelets::tests::unknown_edge_sticker_combination_fails_cubie_conversion ... ok
[INFO] [stdout] test cube::facelets::tests::unknown_edge_sticker_combination_returns_structured_error ... ok
[INFO] [stdout] test cube::notation::tests::parses_basic_face_turns ... ok
[INFO] [stdout] test cube::scramble::tests::generated_scramble_has_requested_length ... ok
[INFO] [stdout] test cube::scramble::tests::generated_scramble_avoids_consecutive_same_axis_moves ... ok
[INFO] [stdout] test cube::scramble::tests::generated_scramble_is_deterministic_for_seed ... ok
[INFO] [stdout] test cube::facelets::tests::one_move_facelet_states_convert_to_matching_cubie_states ... ok
[INFO] [stdout] test cube::scramble::tests::generated_scramble_inverse_solves_cube ... ok
[INFO] [stdout] test cube::scramble::tests::generated_scramble_varies_by_seed ... ok
[INFO] [stdout] test cube::scramble::tests::parsed_scramble_displays_as_notation ... ok
[INFO] [stdout] test cube::state::tests::cube_accepts_valid_state ... ok
[INFO] [stdout] test cube::state::tests::cube_rejects_invalid_state ... ok
[INFO] [stdout] test cube::scramble::tests::generated_scramble_keeps_state_valid ... ok
[INFO] [stdout] test cube::state::tests::scrambled_state_serialization_round_trip_preserves_state ... ok
[INFO] [stdout] test cube::state::tests::every_move_keeps_state_valid ... ok
[INFO] [stdout] test cube::state::tests::every_move_changes_solved_cube_and_inverse_restores_it ... ok
[INFO] [stdout] test cube::state::tests::solved_cube_is_solved ... ok
[INFO] [stdout] test cube::state::tests::short_algorithm_keeps_state_valid ... ok
[INFO] [stdout] test dataset::jsonl::tests::legacy_training_example_jsonl_keeps_schema_v1_field_order ... ok
[INFO] [stdout] test dataset::jsonl::tests::training_example_v2_jsonl_includes_puzzle_compatibility_fields ... ok
[INFO] [stdout] test cube::state::tests::front_turn_has_expected_permutation_from_solved_state ... ok
[INFO] [stdout] test cube::state::tests::front_turn_updates_piece_orientation ... ok
[INFO] [stdout] test cube::facelets::tests::duplicate_edge_sticker_combination_returns_structured_error ... ok
[INFO] [stdout] test cube::state::tests::applying_any_move_four_times_restores_solved_cube ... ok
[INFO] [stdout] test cube::state::tests::u_and_d_turns_preserve_orientation ... ok
[INFO] [stdout] test dataset::types::tests::puzzle_state_hash_includes_puzzle_and_encoding ... ok
[INFO] [stdout] test dataset::types::tests::puzzle_state_split_is_stable ... ok
[INFO] [stdout] test puzzle::ids::tests::puzzle_id_round_trips_through_internal_id ... ok
[INFO] [stdout] test dataset::types::tests::legacy_state_hash_depends_only_on_state ... ok
[INFO] [stdout] test puzzle::ids::tests::rejects_unknown_puzzle_id_and_slug ... ok
[INFO] [stdout] test puzzle::registry::tests::current_3x3_strategies_are_scoped_to_3x3 ... ok
[INFO] [stdout] test puzzle::registry::tests::puzzle_registry_contains_current_public_catalog_scope ... ok
[INFO] [stdout] test puzzle::registry::tests::puzzle_registry_marks_2x2_as_experimental_with_solver_capability ... ok
[INFO] [stdout] test puzzle::registry::tests::strategies_do_not_cross_puzzle_boundaries ... ok
[INFO] [stdout] test puzzle::registry::tests::strategy_ids_remain_stable ... ok
[INFO] [stdout] test puzzle::registry::tests::strategy_lookup_requires_matching_puzzle ... ok
[INFO] [stdout] test puzzles::cube2::algorithm::tests::displays_algorithm_as_notation ... ok
[INFO] [stdout] test puzzles::cube2::algorithm::tests::algorithm_inverse_solves_applied_algorithm ... ok
[INFO] [stdout] test puzzle::registry::tests::puzzle_registry_marks_current_3x3_as_stable ... ok
[INFO] [stdout] test puzzles::cube2::algorithm::tests::parse_display_round_trip_preserves_algorithm ... ok
[INFO] [stdout] test puzzles::cube2::algorithm::tests::parses_algorithm ... ok
[INFO] [stdout] test puzzles::cube2::coordinates::tests::corner_permutation_coordinate_round_trips_scrambled_state ... ok
[INFO] [stdout] test puzzles::cube2::coordinates::tests::corner_orientation_coordinate_round_trips_scrambled_state ... ok
[INFO] [stdout] test puzzles::cube2::coordinates::tests::rejects_invalid_orientation_before_indexing ... ok
[INFO] [stdout] test cube::coordinates::tests::solved_ud_slice_edge_combination_coordinate_round_trips_membership ... ok
[INFO] [stdout] test puzzle::registry::tests::current_2x2_strategies_are_scoped_to_2x2 ... ok
[INFO] [stdout] test puzzle::ids::tests::puzzle_id_round_trips_through_api_slug ... ok
[INFO] [stdout] test puzzles::cube2::coordinates::tests::rejects_invalid_orientation_sum_before_indexing ... ok
[INFO] [stdout] test cube::state::tests::inverse_cube_matches_inverse_algorithm ... ok
[INFO] [stdout] test puzzles::cube2::coordinates::tests::rejects_out_of_range_orientation_coordinate ... ok
[INFO] [stdout] test puzzles::cube2::coordinates::tests::rejects_out_of_range_permutation_coordinate ... ok
[INFO] [stdout] test puzzles::cube2::coordinates::tests::solved_coordinates_are_zero ... ok
[INFO] [stdout] test puzzles::cube2::cubies::tests::deserializes_solved_state ... ok
[INFO] [stdout] test puzzles::cube2::cubies::tests::duplicate_corner_is_invalid ... ok
[INFO] [stdout] test puzzles::cube2::cubies::tests::invalid_corner_orientation_sum_is_invalid ... ok
[INFO] [stdout] test puzzles::cube2::cubies::tests::invalid_corner_orientation_value_is_invalid ... ok
[INFO] [stdout] test puzzles::cube2::cubies::tests::solved_state_is_solved_and_valid ... ok
[INFO] [stdout] test puzzles::cube2::notation::tests::parses_all_basic_face_turns ... ok
[INFO] [stdout] test puzzles::cube2::coordinates::tests::rejects_duplicate_permutation_before_indexing ... ok
[INFO] [stdout] test puzzles::cube2::notation::tests::rejects_wide_slice_rotation_and_invalid_tokens ... ok
[INFO] [stdout] test puzzles::cube2::cubies::tests::missing_corner_is_invalid ... ok
[INFO] [stdout] test puzzles::cube2::quality::tests::fixture_ids_are_unique_and_scrambles_are_valid ... ok
[INFO] [stdout] test puzzles::cube2::scan::tests::invalid_color_counts_are_rejected ... ok
[INFO] [stdout] test puzzles::cube2::scan::tests::scan_faces_round_trip_scrambled_corners ... ok
[INFO] [stdout] test puzzles::cube2::scan::tests::scrambled_visual_state_preserves_2x2_color_counts ... ok
[INFO] [stdout] test puzzles::cube2::scan::tests::solved_scan_faces_build_solved_cube ... ok
[INFO] [stdout] test puzzles::cube2::cubies::tests::rejects_deserialized_invalid_state ... ok
[INFO] [stdout] test puzzles::cube2::cubies::tests::serializes_solved_state_to_stable_text ... ok
[INFO] [stdout] test puzzles::cube2::scan::tests::visual_state_returns_2x2_facelet_string ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::insufficient_depth_returns_not_found ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::max_depth_zero_only_solves_solved_state ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::node_budget_returns_node_limit_exceeded ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::pdb_solver_solves_solved_state ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::one_move_scramble_solves ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::solved_state_returns_empty_solution ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::pdb_solver_preserves_node_budget ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::same_axis_pruning_keeps_one_canonical_face_order ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::strategy_id_is_stable ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::same_face_pruning_still_solves_half_turn_scramble ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::two_move_scramble_solves ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::zero_node_budget_returns_node_limit_without_visiting_nodes ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::solution_moves_are_legal_cube2_moves ... ok
[INFO] [stdout] test cube::coordinates::tests::ud_slice_edge_combination_documents_engine_slice_edges ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::three_move_scramble_solves ... ok
[INFO] [stdout] test puzzles::cube2::state::tests::applying_any_move_four_times_restores_solved_cube ... ok
[INFO] [stdout] test puzzles::cube2::state::tests::cube_accepts_valid_state ... ok
[INFO] [stdout] test puzzles::cube2::state::tests::cube_rejects_invalid_state ... ok
[INFO] [stdout] test puzzles::cube2::state::tests::every_move_changes_solved_cube_and_inverse_restores_it ... ok
[INFO] [stdout] test puzzles::cube2::state::tests::every_move_keeps_state_valid ... ok
[INFO] [stdout] test puzzles::cube2::state::tests::half_turn_matches_two_quarter_turns ... ok
[INFO] [stdout] test puzzles::cube2::state::tests::inverse_cube_matches_inverse_algorithm ... ok
[INFO] [stdout] test puzzles::cube2::state::tests::prime_turn_matches_three_quarter_turns ... ok
[INFO] [stdout] test puzzles::cube2::state::tests::scrambled_state_serialization_round_trip_preserves_state ... ok
[INFO] [stdout] test puzzles::cube2::state::tests::short_algorithm_keeps_state_valid ... ok
[INFO] [stdout] test puzzles::cube2::state::tests::solved_cube_is_solved ... ok
[INFO] [stdout] test scan_inference::tests::client_rotation_prior_recovers_rotated_face_observations ... ok
[INFO] [stdout] test scan_inference::tests::close_valid_runner_up_returns_state_ambiguous ... ok
[INFO] [stdout] test scan_inference::tests::impossible_high_confidence_evidence_is_rejected ... ok
[INFO] [stdout] test scan_inference::tests::low_confidence_face_requests_rescan ... ok
[INFO] [stdout] test scan_inference::tests::manual_override_forces_sticker_evidence ... ok
[INFO] [stdout] test scan_inference::tests::solved_high_confidence_scan_is_accepted ... ok
[INFO] [stdout] test scan_inference::tests::visually_ambiguous_single_sticker_requests_manual_confirmation ... ok
[INFO] [stdout] test search::corner_pdb::tests::bounded_corner_pdb_attempt_nodes_keeps_fallback_budget ... ok
[INFO] [stdout] test search::corner_pdb::tests::bounded_corner_pdb_depth_schedule_targets_short_limits_only ... ok
[INFO] [stdout] test search::corner_pdb::tests::corner_pattern_coordinate_combines_permutation_and_orientation ... ok
[INFO] [stdout] test search::corner_pdb::tests::record_attempt_outcome_returns_cumulative_found_solution ... ok
[INFO] [stdout] test search::corner_pdb::tests::sparse_corner_pdb_heuristic_uses_depth_plus_one_for_missing_entries ... ok
[INFO] [stdout] test search::edge_pdb::tests::abstract_edge_move_effect_matches_cube_move ... ok
[INFO] [stdout] test search::edge_pdb::tests::edge_pattern_artifact_rejects_pattern_mismatch ... ok
[INFO] [stdout] test search::edge_pdb::tests::edge_pattern_artifact_round_trips ... ok
[INFO] [stdout] test search::edge_pdb::tests::edge_pattern_coordinate_has_explicit_range ... ok
[INFO] [stdout] test search::edge_pdb::tests::edge_pattern_coordinates_round_trip_representatives ... ok
[INFO] [stdout] test search::edge_pdb::tests::edge_pattern_paths_are_stable ... ok
[INFO] [stdout] test search::edge_pdb::tests::edge_pattern_ranks_round_trip ... ok
[INFO] [stdout] test search::edge_pdb::tests::generated_depth_one_database_is_admissible_for_one_move_scrambles ... ok
[INFO] [stdout] test search::heuristics::tests::heuristics_do_not_mutate_cube_state ... ok
[INFO] [stdout] test search::heuristics::tests::max_heuristic_returns_largest_child_estimate ... ok
[INFO] [stdout] test search::heuristics::tests::orientation_pattern_database_detects_one_move_orientation_changes ... ok
[INFO] [stdout] test search::heuristics::tests::orientation_pattern_database_is_at_least_simple_orientation_heuristics ... ok
[INFO] [stdout] test search::heuristics::tests::simple_heuristics_do_not_overestimate_known_depths ... ok
[INFO] [stdout] test search::heuristics::tests::solved_cube_estimates_zero_for_all_simple_heuristics ... ok
[INFO] [stdout] test search::heuristics::tests::zero_heuristic_always_returns_zero ... ok
[INFO] [stdout] test search::hybrid::tests::dependency_fallback_metadata_is_not_loaded_as_learned_values ... ok
[INFO] [stdout] test search::hybrid::tests::missing_artifact_reports_missing_status ... ok
[INFO] [stdout] test search::hybrid::tests::solved_child_score_orders_shallow_solution_first ... ok
[INFO] [stdout] test search::hybrid::tests::value_model_scores_all_child_states_without_lookup_misses ... ok
[INFO] [stdout] test search::ida_star::tests::bounded_ida_star_enforces_node_limit ... ok
[INFO] [stdout] test search::ida_star::tests::bounded_ida_star_reports_depth_limit_with_metrics ... ok
[INFO] [stdout] test search::ida_star::tests::bounded_ida_star_reports_found_solution_with_metrics ... ok
[INFO] [stdout] test search::ida_star::tests::heuristic_guided_api_accepts_current_simple_heuristics ... ok
[INFO] [stdout] test search::ida_star::tests::heuristic_guided_solution_uses_face_moves_only ... ok
[INFO] [stdout] test search::ida_star::tests::ida_star_reports_explored_nodes ... ok
[INFO] [stdout] test search::ida_star::tests::insufficient_depth_returns_none ... ok
[INFO] [stdout] test search::ida_star::tests::max_heuristic_solves_shallow_scramble ... ok
[INFO] [stdout] test search::ida_star::tests::move_pruning_canonicalizes_same_axis_branches ... ok
[INFO] [stdout] test search::ida_star::tests::one_move_scramble_solves ... ok
[INFO] [stdout] test search::ida_star::tests::root_export_bounded_ida_star_reports_found_solution ... ok
[INFO] [stdout] test search::ida_star::tests::solution_preserves_valid_state_when_applied ... ok
[INFO] [stdout] test search::ida_star::tests::solution_uses_face_moves_only ... ok
[INFO] [stdout] test search::ida_star::tests::solved_cube_returns_empty_solution ... ok
[INFO] [stdout] test search::ida_star::tests::two_move_scramble_solves ... ok
[INFO] [stdout] test search::optimal_pdb16::tests::pdb16_attempt_nodes_preserves_fallback_budget ... ok
[INFO] [stdout] test search::pruning::tests::checked_lookup_reports_coordinate_arity_mismatch ... ok
[INFO] [stdout] test search::pruning::tests::checked_lookup_reports_metadata_mismatch ... ok
[INFO] [stdout] test search::pruning::tests::checked_lookup_reports_missing_sparse_entry ... ok
[INFO] [stdout] test search::pruning::tests::checked_lookup_reports_out_of_range_composed_index ... ok
[INFO] [stdout] test search::pruning::tests::checked_lookup_reports_out_of_range_coordinate_component ... ok
[INFO] [stdout] test search::pruning::tests::compact_artifact_is_smaller_than_sparse_coordinate_space ... ok
[INFO] [stdout] test search::pruning::tests::compact_artifact_round_trips_with_metadata_and_lookup ... ok
[INFO] [stdout] test search::pruning::tests::coordinate_index_composes_dimensions_without_allocating_full_table ... ok
[INFO] [stdout] test search::pruning::tests::corrupted_fixture_line_is_rejected ... ok
[INFO] [stdout] test search::pruning::tests::dense_artifact_rejects_distance_above_max_depth ... ok
[INFO] [stdout] test search::pruning::tests::fixture_distance_above_max_depth_is_rejected ... ok
[INFO] [stdout] test search::pruning::tests::fixture_metadata_records_pruning_table_boundary ... ok
[INFO] [stdout] test search::pruning::tests::fixture_missing_metadata_is_rejected ... ok
[INFO] [stdout] test search::pruning::tests::fixture_out_of_range_entry_index_is_rejected ... ok
[INFO] [stdout] test search::pruning::tests::generated_artifact_rejects_checksum_corruption ... ok
[INFO] [stdout] test search::pruning::tests::generated_artifact_rejects_compact_distance_above_max_depth ... ok
[INFO] [stdout] test search::pruning::tests::generated_artifact_rejects_corrupt_header_after_checksum_update ... ok
[INFO] [stdout] test search::pruning::tests::generated_artifact_rejects_duplicate_compact_entry ... ok
[INFO] [stdout] test search::pruning::tests::generated_artifact_rejects_entry_count_larger_than_payload_before_allocation ... ok
[INFO] [stdout] test search::pruning::tests::generated_artifact_rejects_entry_payload_size_overflow_before_allocation ... ok
[INFO] [stdout] test search::pruning::tests::generated_artifact_rejects_out_of_range_compact_entry ... ok
[INFO] [stdout] test search::pruning::tests::generated_artifact_rejects_unsorted_compact_entries ... ok
[INFO] [stdout] test search::pruning::tests::generated_artifact_rejects_unsupported_format_version_after_checksum_update ... ok
[INFO] [stdout] test search::pruning::tests::generated_table_artifact_bytes_are_deterministic ... ok
[INFO] [stdout] test search::pruning::tests::generated_table_validation_rejects_metadata_mismatch ... ok
[INFO] [stdout] test search::pruning::tests::missing_artifact_load_is_structured_io_error ... ok
[INFO] [stdout] test search::pruning::tests::phase2_fixture_metadata_records_pruning_table_boundary ... ok
[INFO] [stdout] test search::pruning::tests::public_coordinate_decomposition_reports_checked_errors ... ok
[INFO] [stdout] test search::pruning::tests::public_lookup_helpers_report_checked_errors ... ok
[INFO] [stdout] test search::pruning::tests::solved_and_shallow_fixture_lookups_return_distances ... ok
[INFO] [stdout] test search::pruning::tests::table_size_uses_checked_coordinate_dimensions ... ok
[INFO] [stdout] test search::two_phase::tests::inverse_solution_moves_reverses_and_inverts_moves ... ok
[INFO] [stdout] test search::two_phase::tests::missing_depth_limited_table_entry_is_lower_bound_above_generated_depth ... ok
[INFO] [stdout] test search::two_phase::tests::move_pruning_canonicalizes_opposite_faces_on_same_axis ... ok
[INFO] [stdout] test search::two_phase::tests::move_pruning_keeps_different_axes_available ... ok
[INFO] [stdout] test search::two_phase::tests::move_pruning_skips_same_face_turns ... ok
[INFO] [stdout] test search::two_phase::tests::multiprobe_node_budget_preserves_fallback_budget ... ok
[INFO] [stdout] test search::two_phase::tests::phase1_candidate_moves_exclude_pruned_moves ... ok
[INFO] [stdout] test search::two_phase::tests::phase1_candidates_sort_by_estimated_total_then_heuristic_then_move_order ... ok
[INFO] [stdout] test search::two_phase::tests::phase1_move_tables_match_cube_move_semantics_for_sample_states ... ok
[INFO] [stdout] test search::two_phase::tests::phase1_multiprobe_profile_can_prioritize_half_turns ... ok
[INFO] [stdout] test search::two_phase::tests::phase2_candidate_moves_exclude_pruned_moves ... ok
[INFO] [stdout] test search::two_phase::tests::phase2_candidates_sort_by_estimated_total_then_heuristic_then_move_order ... ok
[INFO] [stdout] test puzzles::cube2::search::pdb::tests::move_tables_have_expected_sizes_and_solved_transitions ... ok
[INFO] [stdout] test search::two_phase::tests::quality_depth_node_budget_slices_short_depth_attempts ... ok
[INFO] [stdout] test search::two_phase::tests::quality_depth_schedule_targets_gods_number_buckets_before_full_depth ... ok
[INFO] [stdout] test search::two_phase::tests::quality_probe_budget_uses_short_depth_and_small_node_slice ... ok
[INFO] [stdout] test search::two_phase::tests::record_quality_attempt_combines_explored_nodes_and_metrics ... ok
[INFO] [stdout] test search::two_phase::tests::search_context_records_quality_depths_and_best_solution_candidate ... ok
[INFO] [stdout] test solver::benchmark::tests::generated_real_scramble_fixtures_are_deterministic_unique_states ... ok
[INFO] [stdout] test solver::benchmark::tests::real_scramble_benchmark_reports_generated_setup_failures_once ... ok
[INFO] [stdout] test solver::benchmark::tests::real_scramble_benchmark_summary_counts_quality_buckets ... ok
[INFO] [stdout] test solver::benchmark::tests::real_scramble_benchmark_uses_configured_state_solver_limits ... ok
[INFO] [stdout] test solver::benchmark::tests::real_scramble_fixtures_are_valid_unsolved_states ... ok
[INFO] [stdout] test solver::tests::empty_solve_result_reports_zero_length ... ok
[INFO] [stdout] test solver::tests::facelet_conversion_failures_return_structured_input_errors ... ok
[INFO] [stdout] test solver::tests::facelet_parse_failures_return_structured_input_errors ... ok
[INFO] [stdout] test solver::tests::facelet_playback_replays_solution_from_shallow_scramble ... ok
[INFO] [stdout] test solver::tests::facelet_playback_reports_non_solving_final_state ... ok
[INFO] [stdout] test solver::tests::facelet_playback_returns_solved_for_solved_input_without_moves ... ok
[INFO] [stdout] test solver::tests::facelet_playback_returns_structured_conversion_errors ... ok
[INFO] [stdout] test solver::tests::facelet_playback_returns_structured_notation_errors ... ok
[INFO] [stdout] test solver::tests::facelet_playback_returns_structured_parse_errors ... ok
[INFO] [stdout] test puzzles::cube2::search::pdb::tests::one_move_projections_have_distance_at_most_one ... ok
[INFO] [stdout] test puzzles::cube2::search::pdb::tests::pdbs_fill_every_coordinate ... ok
[INFO] [stdout] test solver::tests::facelet_solver_reports_node_budget_as_search_failure ... ok
[INFO] [stdout] test solver::tests::facelet_solver_reports_depth_limit_as_search_failure ... ok
[INFO] [stdout] test puzzles::cube2::search::pdb::tests::heuristic_does_not_overestimate_shallow_known_scrambles ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::pdb_solver_solves_deeper_scramble_with_reasonable_budget ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::pdb_solver_solves_three_move_scramble ... ok
[INFO] [stdout] test solver::tests::impossible_facelet_state_returns_cubie_validation_conversion_error ... ok
[INFO] [stdout] test solver::tests::facelet_validation_returns_parse_conversion_and_cubie_errors ... ok
[INFO] [stdout] test solver::tests::invalid_cubie_state_returns_validation_error ... ok
[INFO] [stdout] test solver::tests::max_nodes_limit_is_reported_as_limit_failure ... ok
[INFO] [stdout] test solver::tests::insufficient_max_depth_reports_limit_failure ... ok
[INFO] [stdout] test puzzles::cube2::search::pdb::tests::heuristic_is_zero_for_solved_state ... ok
[INFO] [stdout] test solver::tests::replay_failure_is_not_returned_as_success ... ok
[INFO] [stdout] test solver::tests::root_exports_construct_solver_types ... ok
[INFO] [stdout] test solver::tests::solve_error_distinguishes_invalid_input_from_not_found ... ok
[INFO] [stdout] test solver::tests::solve_result_reports_moves_length_and_explored_nodes ... ok
[INFO] [stdout] test solver::tests::solved_and_shallow_facelet_strings_validate_successfully ... ok
[INFO] [stdout] test solver::tests::solved_cubie_state_returns_empty_solution ... ok
[INFO] [stdout] test puzzles::cube2::search::ida_star::tests::pdb_solver_preserves_insufficient_depth_failure ... ok
[INFO] [stdout] test puzzles::cube2::search::pdb::tests::pdbs_have_expected_sizes_and_solved_distance ... ok
[INFO] [stdout] test solver::tests::solved_facelet_string_returns_empty_solution ... ok
[INFO] [stdout] test solver::tests::root_exports_solve_facelet_string ... ok
[INFO] [stdout] test solver::tests::root_exports_solve_cubie_state ... ok
[INFO] [stdout] test solver::tests::solver_config_stores_depth_and_node_limit ... ok
[INFO] [stdout] test solver::tests::solver_strategy_exposes_stable_boundary_metadata ... ok
[INFO] [stdout] test solver::tests::solver_strategy_supported_message_lists_all_strategy_ids ... ok
[INFO] [stdout] test solver::tests::solve_cube_accepts_valid_cube_inputs ... ok
[INFO] [stdout] test solver::tests::shallow_cubie_scramble_returns_valid_solution ... ok
[INFO] [stdout] test solver::tests::shallow_facelet_string_returns_verified_solution ... ok
[INFO] [stdout] test puzzles::cube2::quality::tests::markdown_contains_summary_and_rows ... ok
[INFO] [stdout] test puzzles::cube2::quality::tests::expected_limit_fixtures_are_not_gate_failures ... ok
[INFO] [stdout] test puzzles::cube2::quality::tests::solved_fixture_returns_empty_replay_verified_solution ... ok
[INFO] [stdout] test puzzles::cube2::quality::tests::report_runs_every_fixture_for_every_strategy ... ok
[INFO] [stdout] test puzzles::cube2::quality::tests::shallow_and_representative_fixtures_succeed_with_replay ... ok
[INFO] [stdout] test puzzles::cube2::quality::tests::invalid_notation_fixtures_are_rejected ... ok
[INFO] [stdout] test search::two_phase::tests::phase2_move_tables_match_cube_move_semantics_for_sample_g1_states ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 329 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 36.33s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/cube2_quality_report.rs (/opt/rustwide/target/debug/deps/cube2_quality_report-8402d1a1c487c116)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/generate_corner_pdb.rs (/opt/rustwide/target/debug/deps/generate_corner_pdb-600b1426b905ba26)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test tests::parse_args_accepts_output_and_depth ... ok
[INFO] [stdout] test tests::parse_args_uses_safe_defaults ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/generate_edge_pdb.rs (/opt/rustwide/target/debug/deps/generate_edge_pdb-3ab1260d0d25d9f1)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test tests::parse_args_uses_safe_defaults ... ok
[INFO] [stdout] test tests::parse_args_accepts_output_depth_and_pattern ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/generate_pruning_tables.rs (/opt/rustwide/target/debug/deps/generate_pruning_tables-105f89d9b5411870)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stderr]      Running unittests src/bin/generate_scan_e2e_fixtures.rs (/opt/rustwide/target/debug/deps/generate_scan_e2e_fixtures-32b7711a6cbb79dd)
[INFO] [stdout] test tests::parse_args_accepts_output_and_depths ... ok
[INFO] [stdout] test tests::parse_args_uses_safe_defaults ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/generate_solver_dataset.rs (/opt/rustwide/target/debug/deps/generate_solver_dataset-1bf2d49ab2fbd2ff)
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test tests::parse_args_uses_documented_defaults ... ok
[INFO] [stdout] test tests::parse_args_accepts_solver_dataset_options ... ok
[INFO] [stdout] test tests::parse_args_rejects_unknown_solver_label_mode ... ok
[INFO] [stdout] test tests::parse_args_accepts_unlimited_solver_nodes ... ok
[INFO] [stdout] test tests::parse_args_accepts_separate_solver_label_mode ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/pruning_table_report.rs (/opt/rustwide/target/debug/deps/pruning_table_report-1965064c25dd417a)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test tests::parse_args_uses_default_directory ... ok
[INFO] [stdout] test tests::coverage_percent_reports_fraction ... ok
[INFO] [stdout] test tests::parse_args_accepts_directory ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/solver_quality_report.rs (/opt/rustwide/target/debug/deps/solver_quality_report-611f8b2ac9fb7586)
[INFO] [stderr]      Running unittests src/bin/solver_real_scramble_report.rs (/opt/rustwide/target/debug/deps/solver_real_scramble_report-ddbddd1cce176bd4)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test tests::parse_args_accepts_generated_fixture_options ... ok
[INFO] [stdout] test tests::parse_args_accepts_max_solution_length_gate ... ok
[INFO] [stdout] test tests::parse_args_uses_real_scramble_defaults ... ok
[INFO] [stdout] test tests::parse_args_accepts_unlimited_nodes ... ok
[INFO] [stdout] test tests::parse_args_accepts_strategy_limits_and_table_dir ... ok
[INFO] [stdout] test tests::parse_args_accepts_require_success_gate ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/facelet_roundtrip_fixtures.rs (/opt/rustwide/target/debug/deps/facelet_roundtrip_fixtures-85968ee5af02ccdd)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test swapped_piece_facelets_are_rejected_through_cubie_validation ... ok
[INFO] [stdout] test flipped_edge_facelets_are_rejected_through_cubie_validation ... ok
[INFO] [stdout] test known_multi_move_facelet_states_round_trip_to_matching_cubie_states ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/generated_two_phase.rs (/opt/rustwide/target/debug/deps/generated_two_phase-dc16df299e3b56e9)
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test generated_two_phase_missing_tables_returns_structured_unavailable_error ... ok
[INFO] [stdout] test generated_two_phase_missing_artifact_bytes_returns_structured_unavailable_error ... ok
[INFO] [stdout] test generated_two_phase_corrupt_table_returns_structured_corrupt_error ... ok
[INFO] [stdout] test generated_two_phase_incomplete_artifact_bytes_returns_structured_unavailable_error ... ok
[INFO] [stdout] test generated_two_phase_quality_solves_short_scramble_with_replay has been running for over 60 seconds
[INFO] [stdout] test generated_two_phase_respects_max_depth_with_metrics has been running for over 60 seconds
[INFO] [stdout] test generated_two_phase_respects_max_nodes_with_metrics has been running for over 60 seconds
[INFO] [stdout] test generated_two_phase_solves_documented_cubie_and_facelet_fixtures has been running for over 60 seconds
[INFO] [stdout] test generated_two_phase_respects_max_nodes_with_metrics ... ok
[INFO] [stdout] test generated_two_phase_respects_max_depth_with_metrics ... ok
[INFO] [stdout] test generated_two_phase_quality_solves_short_scramble_with_replay ... ok
[INFO] [stdout] test generated_two_phase_solves_documented_cubie_and_facelet_fixtures ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 211.63s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/solver_quality_report.rs (/opt/rustwide/target/debug/deps/solver_quality_report-690688b938a69ad6)
[INFO] [stdout] 
[INFO] [stdout] running 17 tests
[INFO] [stdout] test solver_quality_report_exposes_gate_failure_statuses ... ok
[INFO] [stdout] test solver_quality_report_detects_report_level_gate_failures ... ok
[INFO] [stdout] test solver_quality_report_unexpected_required_success_failures_become_regression_rows ... ok
[INFO] [stdout] test solver_quality_report_records_hybrid_dependency_fallback_metadata ... ok
[INFO] [stdout] test solver_quality_report_records_malformed_hybrid_value_outputs ... ok
[INFO] [stdout] test solver_quality_report_uses_available_hybrid_values_for_replay_verified_move_ordering ... ok
[INFO] [stdout] test solver_quality_report_uses_hybrid_value_model_for_unseen_move_scores ... ok
[INFO] [stdout] test solver_quality_report_fixtures_cover_valid_shared_catalog_inputs ... ok
[INFO] [stdout] test solver_quality_report_generated_rows_report_success_metrics_when_tables_are_available has been running for over 60 seconds
[INFO] [stdout] test solver_quality_report_includes_each_solver_selection_for_each_fixture has been running for over 60 seconds
[INFO] [stdout] test solver_quality_report_markdown_has_stable_headers_and_local_timing_note has been running for over 60 seconds
[INFO] [stdout] test solver_quality_report_records_generated_table_availability has been running for over 60 seconds
[INFO] [stdout] test solver_quality_report_records_generated_table_corrupt_or_incompatible has been running for over 60 seconds
[INFO] [stdout] test solver_quality_report_records_limit_failures_with_metrics has been running for over 60 seconds
[INFO] [stdout] test solver_quality_report_records_missing_hybrid_value_outputs_without_changing_classical_rows has been running for over 60 seconds
[INFO] [stdout] test solver_quality_report_rows_are_emitted_in_fixture_then_solver_order has been running for over 60 seconds
[INFO] [stdout] test solver_quality_report_successful_rows_are_replay_verified_and_lengths_match has been running for over 60 seconds
[ERROR] error running command: no output for 300 seconds
[INFO] running `Command { std: "docker" "inspect" "3b1f60de68ad125f9efdca0b3669c4336df11e1764c1375e2ed6e286ce112c57", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3b1f60de68ad125f9efdca0b3669c4336df11e1764c1375e2ed6e286ce112c57", kill_on_drop: false }`
[INFO] [stdout] 3b1f60de68ad125f9efdca0b3669c4336df11e1764c1375e2ed6e286ce112c57
